#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
//int main()
//{
//	printf("%d\n", sizeof(char));
//	printf("%d\n", sizeof(short));
//	printf("%d\n", sizeof(int));
//	printf("%d\n", sizeof(long));
//	printf("%d\n", sizeof(long long));
//	printf("%d\n", sizeof(float));
//	printf("%d\n", sizeof(double));
//	printf("%d\n", sizeof(long double));
//	return 0;
//}
//int main()
//{
//
//	float weight1 = 45.5;
//	float weight2 = 45.5f;
//	printf("%f\n", weight1);
//	printf("%f\n", weight2);
//	return 0;
//}
//int global = 2019;//全局变量
//int main()
//{
//	int local = 2018;//局部变量
//	//下面定义的global会不会有问题？
//	int global = 2020;//局部变量
//	printf("global = %d\n", global);
//	return 0;
//}

//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	int sum = 0;
//	printf("输入两个操作数:>");
//	scanf("%d %d", &num1, &num2);
//	sum = num1 + num2;
//	printf("sum = %d\n", sum);
//	return 0;
//}
//enum Sex
//{
//	MALE = 1,
//	FEMALE,
//	SECRET
//};
//int main()
//{
//	printf("%d", MALE);
//	printf("%d", FEMALE);
//	printf("%d", MALE);
//
//	return 0;
//}

//int main()
//{
//	//字面常量演示
//	3.14;//字面常量
//	1000;//字面常量
//
//	//const 修饰的常变量
//	const float pai = 3.14f; //这里的pai是const修饰的常变量
///*	pai = 5.14;*///是不能直接修改的！
//
//	//#define的标识符常量 演示
//#define MAX 100
//	printf("max = %d\n", MAX);
//
//	//枚举常量演示
//	printf("%d\n", MALE);
//	printf("%d\n", FEMALE);
//	printf("%d\n", SECRET);
//	//注：枚举常量的默认是从0开始，依次向下递增1的
//	return 0;
//}
//#include <stdio.h>
////下面代码，打印结果是什么？为什么？（突出'\0'的重要性）
//int main()
//{
//	char arr1[] = "bit";
//	char arr2[] = { 'b', 'i', 't' };
//	char arr3[] = { 'b', 'i', 't', '\0' };
//	printf("%s\n", arr1);
//	printf("%s\n", arr2);
//	printf("%s\n", arr3);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	printf("c:\code\test.c\n");
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	//问题1：在屏幕上打印一个单引号'，怎么做？
//	//问题2：在屏幕上打印一个字符串，字符串的内容是一个双引号“，怎么做？
//	printf("%c\n", '\'');
//	printf("%s\n", "\"");
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	printf("%d\n", strlen("abcdef"));
//	// \62被解析成一个转义字符
//	printf("%d\n", strlen("c:\test\628\test.c"));
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int coding = 0;
//	printf("你会去敲代码吗？（选择1 or 0）:>");
//	scanf("%d", &coding);
//	if (coding == 1)
//	{
//		printf("坚持，你会有好offer\n");
//	}
//	else
//	{
//		printf("放弃，回家卖红薯\n");
//	}
//	return 0;
//}
//while循环的实例
//#include <stdio.h>
//int main()
//{
//	printf("加入比特\n");
//	int line = 0;
//	while (line <= 20000)
//	{
//		line++;
//		printf("我要继续努力敲代码%d\n", line);
//	}
//	if (line > 20000)
//		printf("好offer\n");
//	return 0;
//}
#include <stdio.h>
//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	int sum = 0;
//	printf("输入两个操作数:>");
//	scanf("%d %d", &num1, &num2);
//	sum = num1 + num2;
//	printf("sum = %d\n", sum);
//	return 0;
//}
//上述代码，写成函数如下：
//#include <stdio.h>
//int Add(int x, int y)
//{
//	int z = x + y;
//	return z;
//}
//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	int sum = 0;
//	printf("输入两个操作数:>");
//	scanf("%d %d", &num1, &num2);
//	sum = Add(num1, num2);
//	printf("sum = %d\n", sum);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int i = 0;
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//	return 0;
//}
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
//typedef unsigned int uint_32;
//int main()
//{
//	//观察num1和num2,这两个变量的类型是一样的
//	unsigned int num1 = 0;
//	uint_32 num2 = 0;
//	return 0;
//}

#include <stdio.h>
void test()
{
	//static修饰局部变量
	static int i = 0;
	i++;
	printf("%d ", i);
}
//int main()
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		test();
//	}
//	return 0;
//}
////代码1
////#include <stdio.h>
////void test()
////{
////	int i = 0;
////	i++;
////	printf("%d ", i);
////}
////int main()
////{
////	int i = 0;
////	for (i = 0; i < 10; i++)
////	{
////		test();
////	}
////	return 0;
////}

//#include <stdio.h>
//int main()
//{
//	int num = 10;
//	&num;//取出num的地址
//	   //注：这里num的4个字节，每个字节都有地址，取出的是第一个字节的地址（较小的地址）
//	printf("%p\n", &num);//打印地址，%p是以地址的形式打印
//	return 0;
//}

//int main()
//{
//	printf("%d\n", sizeof(char*));
//	printf("%d\n", sizeof(short*));
//	printf("%d\n", sizeof(int*));
//	printf("%d\n", sizeof(double*));
//	return 0;
//}
//int main()
//{
//	int hour = 0;
//	int min = 0;
//	int s = 0;
//	int n = 0;
//	scanf("%d", &n);
//	hour = n / 3600;
//	min = (n % 3600) / 60;
//	s = n % 60;
//
//
//	return 0;
//}//将秒转化成时分秒

//int main()
//{
//	int n = 0;
//	int time = 0;
//	scanf("%d", &n);
//	if (n < 12)
//		printf("2");
//	else
//	{
//		time = 4 * (n / 12) + 2;
//		printf("%d", time);
//	}
//
//
//
//	return 0;
//}
//乐乐学校教学楼的电梯前排了很多人，他的前面有n个人在等电梯。电梯每次可以乘坐12人，
//每次上下需要的时间为4分钟（上需要2分钟，下需要2分钟）。
//请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。（假设最初电梯在1层）
//int main()
//{
//	int n = 0;
//	int time = 0;
//	scanf("%d", &n);
//	
//	time = 4 * (n / 12) + 2;
//	printf("%d", time);
//	
//
//
//
//	return 0;
//}
//方法一
//int main()
//{
//	int n = 0;
//	n = printf("Hello world!");
//	printf("\n");
//	printf("%d", n);
//
//	return 0;
//}
//方法二
//int main()
//{
//	printf("\n%d\n", printf("Hello world!"));
//	return 0;
//}
//KiKi写了一个输出“Hello world!”的程序，BoBo老师告诉他printf函数有返回值，你能帮他写个程序输出printf(“Hello world!”)的返回值吗？
//输入描述：
//无
//输出描述：
//包括两行：
//第一行为“Hello world!”
//第二行为printf(“Hello world!”)调用后的返回值。

//printf("\n%d\n", 12);

//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	while (scanf("%d %d %d", &a, &b, &c) == 3)
//	{
//		//先判断是否能构成三角形
//		if ((a + b > c) && (a - b < c))
//		{
//			//判断类型
//			//等腰
//			if ((a == b && b != c) || (a == c && c != b) || (b == c && c != a))
//			{
//				printf("Isosceles triangle!\n");
//			}
//			//等边
//			else if (a == b && b == c)
//			{
//				printf("Equilateral triangle!\n");
//			}
//			else
//			{
//				printf("Ordinary triangle!\n");
//			}
//		}
//		else
//		{
//			printf("Not a triangle!\n");
//		}
//	}
//	return 0;
//}
//int main()
//{
//int a = 0;
//int b = 0;
//int c = 0;
//while (~scanf("%d %d %d", &a, &b, &c))
//{
//    if ((a + b > c) && (a + c > b) && (b + c > a))
//    {
//        //三角形
//        if (a == b && b == c)//等边三角形
//        {
//            printf("Equilateral triangle!\n");
//        }
//        else if (((a == b) && (b != c)) || ((a == c) && (c != b)) || ((b == c) && (c != a)))//等腰
//        {
//            printf("Isosceles triangle!\n");
//        }
//        else
//        {
//            printf("Ordinary triangle!\n");
//        }
//    }
//    else
//    {
//        //不是三角形
//        printf("Not a triangle!\n");
//    }
//}
//return 0;
//}
//KiKi想知道已经给出的三条边a，b，c能否构成三角形，如果能构成三角形，判断三角形的类型（等边三角形、等腰三角形或普通三角形）。
//输入描述：
//题目有多组输入数据，每一行输入三个a，b，c(0 < a, b, c < 1000)，作为三角形的三个边，用空格分隔。
//输出描述：
//针对每组输入数据，输出占一行，如果能构成三角形，等边三角形则输出“Equilateral triangle!”，
//等腰三角形则输出“Isosceles triangle!”，其余的三角形则输出“Ordinary triangle!”，反之输出“Not a triangle!”。
//示例1
//输入：
//2 3 2
//3 3 3
//输出：
//Isosceles triangle!
//Equilateral triangle!

//int main()
//{
//	int weight = 0;
//	double height = 0;
//	scanf("%d %lf", &weight, &height);
//	double BMI = 0;
//	BMI = weight / ((height / 100) * (height / 100));
//	printf("%.2lf", BMI);
//
//
//
//
//	return 0;
//}
//int main()
//{
//    int weight = 0;
//    int height = 0;
//    double bmi = 0.0;
//    scanf("%d%d", &weight, &height);
//    bmi = weight / ((double)height * height / 10000);
//    printf("%.2lf\n", bmi);
//    return 0;
//}
//描述
//问题：计算BMI指数（身体质量指数）。BMI指数（即身体质量指数，简称体质指数又称体重，
// 英文为Body Mass Index，简称BMI），是用体重公斤数除以身高米数平方得出的数字，
// 是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。主要用于统计用途，
// 当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时，BMI值是一个中立而可靠的指标。
//
//数据范围：输入的数据满足
//50≤n≤180
//
//输入描述：
//一行，两个整数，分别表示体重（公斤），身高（厘米），中间用一个空格分隔。
//输出描述：
//一行，BMI指数（保留两位小数）。
//示例1
//输入：
//70 170
//
//输出：
//24.22

//int main()
//{
//	long long s = 0;
//	int age = 0;
//	scanf("%d", &age);
//	s = age * 31560000;
//	printf("%lld", s);
//
//	return 0;
//}
//描述
//问题：一年约有 3.156×107 s，要求输入您的年龄，显示该年龄合多少秒。
//
//数据范围：
//0<≤200
//0 < age≤200
//输入描述：
//一行，包括一个整数age。
//输出描述：
//一行，包含一个整数，输出年龄对应的秒数。
//示例1
//输入：
//20
//输出：
//631200000

//% d             打印整型
//
//% c             打印字符
//
//%s              打印字符串
//
//%f              打印单精度浮点数字
//%.2f            打印单精度浮点数字保留两位小数
//
//
//%lf             打印双精度浮点数字
//%.2lf           打印双精度浮点数字
//
//%ld             打印long类型
//
//%lld            打印long long类型
//
//% p             以地址形式打印
//
//% x             打印16进制数字

//#include <stdio.h>
//int sum(int a)
//{
//    int c = 0;
//    static int b = 3;
//    c += 1;
//    b += 2;
//    return (a + b + c);
//}
//int main()
//{
//    int i;
//    int a = 2;
//    for (i = 0; i < 5; i++)
//    {
//        printf("%d,", sum(a));
//    }
//}
//int main()
//{
//	int sleep_min = 0;
//	int hour = 0;
//	int min = 0;
//	scanf("%d:%d %d", &hour, &min, &sleep_min);
//	hour += sleep_min / 60;
//	min += sleep_min % 60;
//	if (min >= 60)
//	{
//		hour += min / 60;
//		min = min % 60;
//	}
//	if (hour > 24)
//	{
//		hour = hour % 24;
//	}
//	printf("%02d:%02d", hour, min);
//
//	return 0;
//}
// int main()
//{
//	int h = 0;
//	int m = 0;
//	int k = 0;
//	scanf("%d:%d %d", &h, &m, &k);
//	h = ((m + k) / 60 + h) % 24;
//	m = (m + k) % 60;
//	printf("%02d:%02d\n", h, m);
//	return 0;
//}
//小乐乐比较懒惰，他现在想睡觉，然后再去学习。他知道现在的时刻，以及自己要睡的时长，
//想设定一个闹钟叫他起床学习，但是他太笨了，不知道应该把闹钟设定在哪个时刻，请你帮助他。(只考虑时和分，不考虑日期)
//输入描述：
//输入现在的时刻以及要睡的时长k（单位：minute），中间用空格分开。
//输入格式：hour : minute k(如hour或minute的值为1，输入为1，而不是01)
//(0 ≤ hour ≤ 23，0 ≤ minute ≤ 59，1 ≤ k ≤ 109)
//输出描述：
//对于每组输入，输出闹钟应该设定的时刻，输出格式为标准时刻表示法（即时和分都是由两位表示，位数不够用前导0补齐）。
//输入：
//0:0 100
//输出：
//01 : 40
//输入：
//1 : 0 200
//输出：
//04 : 20
//int main()
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		if (i = 5)
//			printf("%d ", i);
//	}
//	return 0;
//}
//int func(int a)
//{
//	int b;
//	switch (a)
//	{
//	case 1: b = 30;
//	case 2: b = 20;
//	case 3: b = 16;
//	default: b = 0;
//	}
//	
//	return b;
//}
//int main()
//{
//	func(1);
//
//	return 0;
//}
//switch的每个case之后如果没有加break语句，当前case执行结束后，
//会继续执行紧跟case中的语句。
//func(1)可知，在调用func时形参a的值为1，switch(a)<==>switch(1),
//case 1被命中，因为该switch语句中所有分支下都没有增加break语句，
//因此会从上往下顺序执行，最后执行default中语句返回。

#include <stdio.h>
//int main() {
//	int x = 3;
//	int y = 3;
//	switch (x % 2)
//	{
//	case 1:
//		switch (y)
//		{
//		case 0:
//			printf("first");
//		case 1:
//			printf("second");
//			break;
//		default: printf("hello");
//		}
//	case 2:
//		printf("third");
//	}
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	/*if (a > b)*/
//	if (a < b);
//	{
//		int tmp = 0;
//		tmp = a;
//		a = b;
//		b = tmp;
//	}
//	if (a > c)
//	{
//		/*if(b>c)*/
//		if (b < c)
//		{
//			int tmp = 0;
//			tmp = b;
//			b = c;
//			c = tmp;
//		}
//	}
//	if (a < c)
//	{
//		int tmp = 0;
//		tmp = a;
//		a = c;
//		c = tmp;
//	}
//	printf("%d %d %d", a, b, c);
//
//
//	return 0;
//}
//从大到小输出
//写代码将三个整数数按从大到小输出。
//例如
//输入：2 3 1
//输出：3 2 1
//方法1.试除法
//int main()
//{
//	int flag = 0;
//	int i = 0;
//	for (i = 100; i <= 200; i++)
//	{
//		int j = 0;
//		for (j = 2; j < i; j++)
//		{
//			flag = 0;
//			if (i % j == 0)
//			{
//				flag = 1;
//				break;
//			}
//		}
//		if (flag == 0)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//
//}
//方法2.试除法优化版
//int main()
//{
//	int flag = 0;
//	int i = 0;
//	for (i = 100; i <= 200; i++)
//	{
//		int j = 0;
//		for (j = 2; j < sqrt(i); j++)
//		{
//			flag = 0;
//			if (i % j == 0)
//			{
//				flag = 1;
//				break;
//			}
//		}
//		if (flag == 0)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
// 
// 
//方法3,flag的另一种表达方式
/*
继续对方法2优化，只要i不被[2, sqrt(i)]之间的任何数据整除，则i是素数，但是实际在操作时i不用从101逐渐递增到200，
因为出了2和3之外，不会有两个连续相邻的数据同时为素数
*/

//
//int main()
//{
//	int i = 0;
//	int count = 0;
//
//
//	for (i = 101; i <= 200; i += 2)
//	{
//		//判断i是否为素数
//		//2->i-1
//		int j = 0;
//		for (j = 2; j <= sqrt(i); j++)
//		{
//			if (i % j == 0)
//			{
//				break;
//			}
//		}
//		//...
//		if (j > sqrt(i))
//		{
//			count++;
//			printf("%d ", i);
//		}
//	}
//
//	printf("\ncount = %d\n", count);
//	return 0;
//}
//写一个代码：打印100~200之间的素数
//思路：
//素数：即质数，除了1和自己之外，再没有其他的约数，则该数据为素数，具体方式如下

#include <stdio.h>
//int main()
//{
//	int year = 0;
//	for (year = 1000; year <= 2000; year++)
//	{
//		//判断year是否为闰年
//		if (year % 4 == 0)  // 如果year能够被4整除，year可能为闰年
//		{
//			if (year % 100 != 0) // 如果year不能内100整除，则一定是闰年
//			{
//				printf("%d ", year);
//			}
//		}
//		if (year % 400 == 0)  // 每400年再润一次
//		{
//			printf("%d ", year);
//		}
//	}
//
//
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int i = 0;
//	scanf("%d %d ", &a, &b);
//	c = (a > b ? a : b);
//	for (i = c; i > 0; i--)
//	{
//		if ((a % i == 0) && (b % i == 0))
//		{
//			printf("%d", i);
//		}
//	}
//
//
//
//	return 0;
//}
//给定两个数，求这两个数的最大公约数
//例如：
//输入：20 40
//输出：20